﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Csla;
using log4net;

namespace Sireass.Bl
{
	[Serializable]
	public class AsignacionCriteria : CriteriaBase<AsignacionCriteria>
	{
		#region Properties
		public static readonly PropertyInfo<long?> IdAsignacionProperty = RegisterProperty<long?>(c => c.IdAsignacion);
		public long? IdAsignacion
		{
			get { return ReadProperty(IdAsignacionProperty); }
			private set { LoadProperty(IdAsignacionProperty, value); }
		}
		public static readonly PropertyInfo<long?> IdPrestadorProperty = RegisterProperty<long?>(c => c.IdPrestador);
		public long? IdPrestador
		{
			get { return ReadProperty(IdPrestadorProperty); }
			private set { LoadProperty(IdPrestadorProperty, value); }
		}
		public static readonly PropertyInfo<string> EncargadoProyectoProperty = RegisterProperty<string>(c => c.EncargadoProyecto);
		public string EncargadoProyecto
		{
			get { return ReadProperty(EncargadoProyectoProperty); }
			private set { LoadProperty(EncargadoProyectoProperty, value); }
		}
		public static readonly PropertyInfo<long?> IdEncargadoProyectoProperty = RegisterProperty<long?>(c => c.IdEncargadoProyecto);
		public long? IdEncargadoProyecto
		{
			get { return ReadProperty(IdEncargadoProyectoProperty); }
			private set { LoadProperty(IdEncargadoProyectoProperty, value); }
		}
		public static readonly PropertyInfo<string> PrestadorProperty = RegisterProperty<string>(c => c.Prestador);
		public string Prestador
		{
			get { return ReadProperty(PrestadorProperty); }
			private set { LoadProperty(PrestadorProperty, value); }
		}
		public static readonly PropertyInfo<long?> IdProyectoProperty = RegisterProperty<long?>(c => c.IdProyecto);
		public long? IdProyecto
		{
			get { return ReadProperty(IdProyectoProperty); }
			private set { LoadProperty(IdProyectoProperty, value); }
		}
		public static readonly PropertyInfo<byte?> IdEstatusProperty = RegisterProperty<byte?>(c => c.IdEstatus);
		public byte? IdEstatus
		{
			get { return ReadProperty(IdEstatusProperty); }
			private set { LoadProperty(IdEstatusProperty, value); }
		}
		public static readonly PropertyInfo<DateTime?> FechaInicioAsignacionProperty = RegisterProperty<DateTime?>(c => c.FechaInicioAsignacion);
		public DateTime? FechaInicioAsignacion
		{
			get { return ReadProperty(FechaInicioAsignacionProperty); }
			private set { LoadProperty(FechaInicioAsignacionProperty, value); }
		}
		public static readonly PropertyInfo<DateTime?> FechaFinAsignacionProperty = RegisterProperty<DateTime?>(c => c.FechaFinAsignacion);
		public DateTime? FechaFinAsignacion
		{
			get { return ReadProperty(FechaFinAsignacionProperty); }
			private set { LoadProperty(FechaFinAsignacionProperty, value); }
		}
        public static readonly PropertyInfo<Int16?> HorasPorAplicarProperty = RegisterProperty<Int16?>(c => c.HorasPorAplicar);
		public Int16? HorasPorAplicar
		{
			get { return ReadProperty(HorasPorAplicarProperty); }
			private set { LoadProperty(HorasPorAplicarProperty, value); }
		}
		public static readonly PropertyInfo<bool?> HabilitadoProperty = RegisterProperty<bool?>(c => c.Habilitado);
		public bool? Habilitado
		{
			get { return ReadProperty(HabilitadoProperty); }
			private set { LoadProperty(HabilitadoProperty, value); }
		}
		public static readonly PropertyInfo<DateTime?> FechaAltaProperty = RegisterProperty<DateTime?>(c => c.FechaAlta);
		public DateTime? FechaAlta
		{
			get { return ReadProperty(FechaAltaProperty); }
			private set { LoadProperty(FechaAltaProperty, value); }
		}
		public static readonly PropertyInfo<DateTime?> FechaBajaProperty = RegisterProperty<DateTime?>(c => c.FechaBaja);
		public DateTime? FechaBaja
		{
			get { return ReadProperty(FechaBajaProperty); }
			private set { LoadProperty(FechaBajaProperty, value); }
		}
		#endregion

		#region Factory
		public AsignacionCriteria(long? idAsignacion, long? idPrestador, string encargadoProyecto, long? idEncargadoProyecto, string prestador, 
									long? idProyecto, byte? idEstatus, DateTime? fechaInicioAsignacion, DateTime? fechaFinAsignacion,
									Int16? horasPorAplicar, bool? habilitado, DateTime? fechaAlta, DateTime? fechaBaja)
		{
			IdAsignacion = idAsignacion;
			IdPrestador = idPrestador;
			EncargadoProyecto = encargadoProyecto;
			IdEncargadoProyecto = idEncargadoProyecto;
			Prestador = prestador;
			IdProyecto = idProyecto;
			IdEstatus = idEstatus;			
			FechaInicioAsignacion = fechaInicioAsignacion;
			FechaFinAsignacion = fechaFinAsignacion;
			HorasPorAplicar = horasPorAplicar;
			Habilitado = habilitado;
			FechaAlta = fechaAlta;
			FechaBaja = fechaBaja;
		}
		#endregion
	}
}
